﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QLVatTu.Class;
using System.Globalization;

namespace QLVatTu.NghiepVu
{
    public partial class frmPhieuDeNghiCapVatTu : Form
    {
        KetNoiDB cn = new KetNoiDB();
        public string SoPhieuCapNhat = "";

        public frmPhieuDeNghiCapVatTu()
        {
            InitializeComponent();
        }

        private void loadData()
        {
            cbbDonViSanXuat.DataSource = cn.getTable("select * from tbl_DoiTac where DonViSanXuat=1");
            cbbDonViSanXuat.DisplayMember = "TenDoiTac";
            cbbDonViSanXuat.ValueMember = "MaDoiTac";

            cbbCongTrinhDuAn.DataSource = cn.getTable("SELECT [MaCongTrinhDuAn],[TenCongTrinhDuAn] FROM [tbl_CongTrinhDuAn]");
            cbbCongTrinhDuAn.DisplayMember = "TenCongTrinhDuAn";
            cbbCongTrinhDuAn.ValueMember = "MaCongTrinhDuAn";

            VatTu.DataSource = cn.getTable("select * from tbl_VatTu");
            VatTu.DisplayMember = "TenVatTu";
            VatTu.ValueMember = "MaVatTu";

            cbbPheDuyet.DataSource = cn.CreateTrangThai();
            cbbPheDuyet.DisplayMember = "TenTrangThai";
            cbbPheDuyet.ValueMember = "TrangThai";

            if (SoPhieuCapNhat == "")
            {
                // Thêm
                txtSoPhieu.Text = cn.SinhMa("SoPhieu", "tbl_PhieuDeNghiCap", "DN");
            }
            else
            {
                // Sửa
                btnLuu.Enabled = true;
                string sql = "SELECT * FROM [tbl_PhieuDeNghiCap] WHERE [SoPhieu] = '" + SoPhieuCapNhat + "'";
                DataTable dt = cn.getTable(sql);
                if (dt.Rows.Count > 0)
                {
                    txtSoPhieu.Text = dt.Rows[0]["SoPhieu"].ToString();
                    cbbDonViSanXuat.SelectedValue = dt.Rows[0]["MaDonViSanXuat"].ToString();
                    cbbCongTrinhDuAn.SelectedValue = dt.Rows[0]["MaCongTrinhDuAn"].ToString();
                    dtipNgayYeuCau.Value = DateTime.Parse(dt.Rows[0]["NgayYeuCau"].ToString());
                    cbbPheDuyet.SelectedValue = bool.Parse(dt.Rows[0]["TrangThai"].ToString());
                    txtNguoiLapPhieu.Text=dt.Rows[0]["NguoiLap"].ToString();

                    sql = @"SELECT     dbo.tbl_ChiTietPhieuDeNghiCap.MaVatTu, dbo.tbl_DonViTinh.TenDonViTinh, dbo.tbl_ChiTietPhieuDeNghiCap.SoLuong
                            FROM         dbo.tbl_ChiTietPhieuDeNghiCap INNER JOIN
                                                  dbo.tbl_DonViTinh ON dbo.tbl_ChiTietPhieuDeNghiCap.MaDonViTinh = dbo.tbl_DonViTinh.MaDonViTinh
                            WHERE     dbo.tbl_ChiTietPhieuDeNghiCap.SoPhieu = '" + SoPhieuCapNhat + "'";
                    DataTable dataChiTiet = cn.getTable(sql);
                    if (dataChiTiet.Rows.Count > 0)
                    {
                        dtgChiTiet.Rows.Clear();
                        foreach (DataRow dr in dataChiTiet.Rows)
                        {
                            DataGridViewRow dgvr = (DataGridViewRow)dtgChiTiet.Rows[0].Clone();
                            dgvr.Cells[1].Value = dr["MaVatTu"].ToString();
                            dgvr.Cells[2].Value = dr["TenDonViTinh"].ToString();
                            dgvr.Cells[3].Value = dr["SoLuong"].ToString();
                            dtgChiTiet.Rows.Add(dgvr);
                        }
                    }
                }
            }
        }

        private void frmPhieuDeNghiCapVatTu_Load(object sender, EventArgs e)
        {
            if (cn.KetNoi())
            {
                loadData();
            }
            else
            {
                MessageBox.Show("Kết nối CSDL thất bại!");
                this.Close();
            }
        }

        private bool IsValid()
        {
            bool kt = true;

            if (txtNguoiLapPhieu.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập tên nhân viên","Thông báo",MessageBoxButtons.OK,MessageBoxIcon.Error);
                txtNguoiLapPhieu.Focus();
                kt = false;
            }
            else if (dtipNgayYeuCau.Value > DateTime.Now)
            {
                MessageBox.Show("Ngày yêu cầu không được lớn hơn ngày hiên tại", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                dtipNgayYeuCau.Focus();
                kt = false;
            }

            else if (dtgChiTiet.Rows.Count == 1 && dtgChiTiet.Rows[0].IsNewRow)
            {
                MessageBox.Show("Bạn chưa chọn vật tư.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                dtgChiTiet.Focus();
                kt = false;
            }
            

            foreach (DataGridViewRow dgvr in dtgChiTiet.Rows)
            {
                if (dgvr.IsNewRow) continue;
                if (kiem_tra_lap_vat_tu(dgvr.Index) == false)
                {
                    kt = false;
                }

                if (dgvr.Cells["VatTu"].Value == null)
                {
                    dgvr.Cells["VatTu"].ErrorText = "Lỗi: " + dtgChiTiet.Columns[dgvr.Cells["VatTu"].ColumnIndex].HeaderText + " chưa được chọn ";
                    kt = false;
                }
                else
                {
                    dgvr.Cells["VatTu"].ErrorText = "";
                    if (dgvr.Cells["DonViTinh"].Value == null)
                    {
                        dgvr.Cells["DonViTinh"].ErrorText = "Lỗi: " + dtgChiTiet.Columns[dgvr.Cells["DonViTinh"].ColumnIndex].HeaderText + " chưa được chọn ";
                        kt = false;
                    }
                    else
                    {
                        dgvr.Cells["DonViTinh"].ErrorText = "";
                    }
                }

                string strSoLuong = "";
                double SoLuong = 0;

                if (dgvr.Cells["Soluong"].Value == null)
                {
                    dgvr.Cells["Soluong"].ErrorText = "Lỗi: " + dtgChiTiet.Columns[dgvr.Cells["Soluong"].ColumnIndex].HeaderText + " chưa được nhập";
                    kt = false;
                }
                else
                {
                    if (dgvr.Cells["SoLuong"].Value.ToString().Contains(','))
                    {
                        strSoLuong = dgvr.Cells["SoLuong"].Value.ToString().Replace(',', '.');
                    }
                    else
                    {
                        strSoLuong = dgvr.Cells["SoLuong"].Value.ToString();
                    }
                    double.TryParse(strSoLuong, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out SoLuong);

                    if (SoLuong <= 0)
                    {
                        dgvr.Cells["Soluong"].ErrorText = "Lỗi: " + dtgChiTiet.Columns[dgvr.Cells["Soluong"].ColumnIndex].HeaderText + " không được nhỏ hơn hoặc bằng 0 và phải là số.";
                        kt = false;
                    }
                    else
                    {

                        dgvr.Cells["Soluong"].ErrorText = "";
                    }
                }
            }
            return kt;
        }

        private bool kiem_tra_lap_vat_tu(int rowIndex)
        {
            foreach (DataGridViewRow dgvr in dtgChiTiet.Rows)
            {
                if (dgvr.IsNewRow) continue;

                if (dgvr.Index != rowIndex && dgvr.Cells[1].Value != null && dgvr.Cells[1].Value.ToString() == dtgChiTiet.Rows[rowIndex].Cells[1].Value.ToString())
                {
                    dgvr.Cells[1].ErrorText = "Lỗi: " + dtgChiTiet.Columns[1].HeaderText + " đã được chọn ";
                    dtgChiTiet.Rows[rowIndex].Cells[1].ErrorText = "Lỗi: " + dtgChiTiet.Columns[1].HeaderText + " đã được chọn ";
                    return false;
                }
                else
                {
                    dgvr.Cells[1].ErrorText = "";
                    dtgChiTiet.Rows[rowIndex].Cells[1].ErrorText = "";
                }
            }
            return true;
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (IsValid())
            {
                string SoPhieu = txtSoPhieu.Text;
                string MaDonViSanXuat = cbbDonViSanXuat.SelectedValue.ToString();
                string MaCongTrinhDuAn = cbbCongTrinhDuAn.SelectedValue.ToString();
                string NgayYeuCau = dtipNgayYeuCau.Value.ToString("yyyy-MM-dd");
                bool TrangThai =bool.Parse(cbbPheDuyet.SelectedValue.ToString());
                string NguoiLap = txtNguoiLapPhieu.Text;

                string strSoLuong = "";
                double SoLuong=0;
                string MaDonViTinh = "";
                string sql = "";

                if (SoPhieuCapNhat == "")
                {
                    cn.Insert_Table("tbl_PhieuDeNghiCap", "SoPhieu,MaDonViSanXuat,NgayYeuCau,TrangThai,MaCongTrinhDuAn,NguoiLap", "'" + SoPhieu + "','" + MaDonViSanXuat + "','" + NgayYeuCau + "','" + TrangThai + "','" + MaCongTrinhDuAn + "',N'"+NguoiLap+"'");
                    
                    foreach (DataGridViewRow dgvr in dtgChiTiet.Rows)
                    {
                        if (dgvr.IsNewRow) continue;

                        if (dgvr.Cells["SoLuong"].Value.ToString().Contains(','))
                        {
                            strSoLuong = dgvr.Cells["SoLuong"].Value.ToString().Replace(',', '.');
                        }
                        else
                        {
                            strSoLuong = dgvr.Cells["SoLuong"].Value.ToString();
                        }
                        double.TryParse(strSoLuong, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out SoLuong);
                        sql = "select MaDonViTinh from tbl_VatTu where MaVatTu='" + dgvr.Cells["VatTu"].Value.ToString() + "'";
                        DataTable dt = cn.getTable(sql);
                        if (dt.Rows.Count > 0)
                        {
                            MaDonViTinh = dt.Rows[0]["MaDonViTinh"].ToString();
                        }

                        cn.Insert_Table("tbl_ChiTietPhieuDeNghiCap", "SoPhieu,MaVatTu,MaDonViTinh,SoLuong", "'" + SoPhieu + "','" + dgvr.Cells["VatTu"].Value.ToString() + "','" + MaDonViTinh+ "','" + SoLuong.ToString().Replace(",",".") + "'");
                    }
                    HangSo.Luu_Hanh_Dong(HangSo.TenDangNhap, HangSo.TenQuyenHan, HangSo.TenNguoiDung, "Thêm phiếu đề nghị cấp vật tư.");
                }
                else
                {
                    cn.Update_Table("tbl_PhieuDeNghiCap", "MaDonViSanXuat='" + MaDonViSanXuat + "',NgayYeuCau='" + NgayYeuCau + "',TrangThai='" + TrangThai + "',MaCongTrinhDuAn='" + MaCongTrinhDuAn + "',NguoiLap='"+NguoiLap+"'", "SoPhieu='" + SoPhieu + "'");

                    cn.Delete_Table("tbl_ChiTietPhieuDeNghiCap", "SoPhieu ='" + SoPhieu + "'");

                    foreach (DataGridViewRow dgvr in dtgChiTiet.Rows)
                    {
                        if (dgvr.IsNewRow) continue;

                        if (dgvr.Cells["SoLuong"].Value.ToString().Contains(','))
                        {
                            strSoLuong = dgvr.Cells["SoLuong"].Value.ToString().Replace(',', '.');
                        }
                        else
                        {
                            strSoLuong = dgvr.Cells["SoLuong"].Value.ToString();
                        }
                        double.TryParse(strSoLuong, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out SoLuong);
                        sql = "select MaDonViTinh from tbl_VatTu where MaVatTu='" + dgvr.Cells["VatTu"].Value.ToString() + "'";
                        DataTable dt = cn.getTable(sql);
                        if (dt.Rows.Count > 0)
                        {
                            MaDonViTinh = dt.Rows[0]["MaDonViTinh"].ToString();
                        }

                        cn.Insert_Table("tbl_ChiTietPhieuDeNghiCap", "SoPhieu,MaVatTu,MaDonViTinh,SoLuong", "'" + SoPhieu + "','" + dgvr.Cells["VatTu"].Value.ToString() + "','" + MaDonViTinh + "','" + SoLuong.ToString().Replace(",",".") + "'");
                    }
                    HangSo.Luu_Hanh_Dong(HangSo.TenDangNhap, HangSo.TenQuyenHan, HangSo.TenNguoiDung, "Sửa phiếu đề nghị cấp vật tư.");
                }
                this.Close();
            }
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            dtgChiTiet.Rows.Clear();
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //private void checkValidationDTGChiTiet()
        //{
        //    bool kt;
        //    foreach (DataGridViewRow dgvr in dtgChiTiet.Rows)
        //    {
        //        if (dgvr.IsNewRow) continue;
        //        if (kiem_tra_lap_vat_tu(dgvr.Index) == false)
        //        {
        //            kt = false;
        //        }

        //        if (dgvr.Cells["VatTu"].Value == null)
        //        {
        //            dgvr.Cells["VatTu"].ErrorText = "Lỗi: " + dtgChiTiet.Columns[dgvr.Cells["VatTu"].ColumnIndex].HeaderText + " chưa được chọn ";
        //            kt = false;
        //        }
        //        else
        //        {
        //            dgvr.Cells["VatTu"].ErrorText = "";
        //            if (dgvr.Cells["DonViTinh"].Value == null)
        //            {
        //                dgvr.Cells["DonViTinh"].ErrorText = "Lỗi: " + dtgChiTiet.Columns[dgvr.Cells["DonViTinh"].ColumnIndex].HeaderText + " chưa được chọn ";
        //                kt = false;
        //            }
        //            else
        //            {
        //                dgvr.Cells["DonViTinh"].ErrorText = "";
        //            }
        //        }

        //        string strSoLuong = "";
        //        double SoLuong = 0;

        //        if (dgvr.Cells["Soluong"].Value == null)
        //        {
        //            dgvr.Cells["Soluong"].ErrorText = "Lỗi: " + dtgChiTiet.Columns[dgvr.Cells["Soluong"].ColumnIndex].HeaderText + " chưa được nhập";
        //            kt = false;
        //        }
        //        else
        //        {
        //            if (dgvr.Cells["SoLuong"].Value.ToString().Contains(','))
        //            {
        //                strSoLuong = dgvr.Cells["SoLuong"].Value.ToString().Replace(',', '.');
        //            }
        //            else
        //            {
        //                strSoLuong = dgvr.Cells["SoLuong"].Value.ToString();
        //            }
        //            double.TryParse(strSoLuong, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out SoLuong);

        //            if (SoLuong <= 0)
        //            {
        //                dgvr.Cells["Soluong"].ErrorText = "Lỗi: " + dtgChiTiet.Columns[dgvr.Cells["Soluong"].ColumnIndex].HeaderText + " không được nhỏ hơn hoặc bằng 0 và phải là số.";
        //                kt = false;
        //            }
        //            else
        //            {

        //                dgvr.Cells["Soluong"].ErrorText = "";
        //            }
        //        }
        //    }
        //}

        private void dtgChiTiet_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (dtgChiTiet.RowCount > 0 && e.RowIndex != -1)
            {
                btnLuu.Enabled = true;
                string sql = "";
                if (e.ColumnIndex == 1 && dtgChiTiet.Rows[e.RowIndex].Cells[1].Value != null)
                {
                    sql = @"SELECT     dbo.tbl_DonViTinh.TenDonViTinh
                            FROM         dbo.tbl_DonViTinh INNER JOIN
                                                  dbo.tbl_VatTu ON dbo.tbl_DonViTinh.MaDonViTinh = dbo.tbl_VatTu.MaDonViTinh
                            WHERE     dbo.tbl_VatTu.MaVatTu ='" + dtgChiTiet.Rows[e.RowIndex].Cells[1].Value.ToString() + "'";
                    DataGridViewTextBoxCell TenDonViTinh = (DataGridViewTextBoxCell)dtgChiTiet.Rows[e.RowIndex].Cells[2];
                    TenDonViTinh.Value = cn.LayDuLieu(sql);

                    //foreach (DataGridViewRow dgvr in dtgChiTiet.Rows)
                    //{
                    //    if (dgvr.IsNewRow) continue;

                    //    if (dgvr.Index != e.RowIndex && dgvr.Cells[1].Value != null && dgvr.Cells[1].Value.ToString() == dtgChiTiet.Rows[e.RowIndex].Cells[1].Value.ToString())
                    //    {
                    //        dgvr.Cells[1].ErrorText = "Lỗi: " + dtgChiTiet.Columns[1].HeaderText + " đã được chọn ";
                    //        dtgChiTiet.Rows[e.RowIndex].Cells[1].ErrorText = "Lỗi: " + dtgChiTiet.Columns[1].HeaderText + " đã được chọn ";
                    //        return;
                    //    }
                    //    else
                    //    {
                    //        dgvr.Cells[1].ErrorText = "";
                    //        dtgChiTiet.Rows[e.RowIndex].Cells[1].ErrorText = "";
                    //    }
                    //}
                }
                //checkValidationDTGChiTiet();
                //if (e.ColumnIndex == 4 && dtgChiTiet.Rows[e.RowIndex].Cells[4].Value != null)
                //{
                //    float SoLuong = 0;
                //    if (float.TryParse(dtgChiTiet.Rows[e.RowIndex].Cells[4].Value.ToString(), out SoLuong))
                //    {
                //        if (SoLuong <= 0)
                //        {
                //            dtgChiTiet.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = "Lỗi: " + dtgChiTiet.Columns[e.ColumnIndex].HeaderText + " không được nhỏ hơn 0 ";
                //        }
                //        else
                //        {
                //            if (dtgChiTiet.Rows[e.RowIndex].Cells[3].Value != null)
                //            {
                //                string MaDonViTinh = dtgChiTiet.Rows[e.RowIndex].Cells[3].Value.ToString();

                //                sql = "select distinct TyLeQuyDoi from tbl_VatTuDonViTinh where MaDonViTinh = '" + MaDonViTinh + "' and MaVatTu='"+dtgChiTiet.Rows[e.RowIndex].Cells[1].Value.ToString()+"'";
                //                float TyLe = float.Parse(cn.LayDuLieu(sql));
                //                float SoLuongQuyDoi = SoLuong * TyLe;
                //                DataGridViewTextBoxCell SoLuongTheoDonViTinhGoc = (DataGridViewTextBoxCell)dtgChiTiet.Rows[e.RowIndex].Cells["SoLuongQuyDoi"];
                //                SoLuongTheoDonViTinhGoc.Value = Math.Round(SoLuongQuyDoi, 2);
                //                dtgChiTiet.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = "";
                //            }
                //            else
                //            {
                //                dtgChiTiet.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = "Lỗi: " + dtgChiTiet.Columns[2].HeaderText + " chưa được chọn ";
                //            }
                //        }
                //    }
                //    else
                //    {
                //        dtgChiTiet.Rows[e.RowIndex].Cells[e.ColumnIndex].ErrorText = "Lỗi: " + dtgChiTiet.Columns[e.ColumnIndex].HeaderText + " chưa được nhập ";
                //    }

                //}
            }
            else
            {
                btnLuu.Enabled = false;
            }
        }

        private void btnXoaChon_Click(object sender, EventArgs e)
        {
            if (dtgChiTiet.Rows.Count > 0)
            {
                for (int i = dtgChiTiet.Rows.Count - 1; i >= 0; i--)
                {
                    if ((bool)dtgChiTiet.Rows[i].Cells[0].Value==true)
                    {
                        dtgChiTiet.Rows.RemoveAt(i);
                    }
                }
            }
        }

    }
}
